package com.qf.service.impl;

import com.qf.dao.EmotionsDao;
import com.qf.entity.Emotions;
import com.qf.service.EmotionsService;
import com.qf.vo.R;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;


/**
 * 心情(Emotions)表服务实现类
 */
@Service("emotionsService")
public class EmotionsServiceImpl implements EmotionsService {
    @Resource
    @Autowired
    private EmotionsDao emotionsDao;
    private static final Logger logger = LoggerFactory.getLogger(EmotionsServiceImpl.class);

    //插入
    @Override
    public R insertEmotions(Emotions emotions) {
        // 参数校验
        if (emotions == null) {
            return R.fail("传入的Emotions参数为空，请检查输入");
        }

        if (emotions.getEmotionId() == null) {
            return R.fail("Emotions参数中的用户ID为空，请指定要插入的用户");
        }

        if (emotions.getMood() == null) {
            return R.fail("Emotions参数中的情绪状态为空，是什么情绪状态");
        }

        if (emotions.getDescription() == null) {
            return R.fail("Emotions情绪描述为空，情绪呢");
        }

        if (emotions.getReason() == null) {
            return R.fail("Emotions情绪影响因素为空，是因为什么影响");
        }

        // 如果Create_TIME为空，设置为当前时间
        if (emotions.getCreateTime() == null) {
            emotions.setCreateTime(new Date());
        }

        try {
            int rowsAffected = emotionsDao.insertEmotion(emotions);
            if (rowsAffected > 0) {
                return R.ok("情绪记录插入成功");
            } else {
                return R.fail("情绪记录插入失败，未影响到任何记录");
            }
        } catch (Exception e) {
            // 记录异常
            return R.fail("插入情绪记录时出现异常，请检查相关设置");
        }
    }


    //查询
    public R selectByEmotions(Emotions emotions) {
        // 参数校验
        if (emotions == null) {
            return R.fail("传入的Emotions对象为空，请检查输入");
        }

        // 判断emotion_id不能为空
        if (emotions.getCreateTime() == null) {
            return R.fail("Emotions对象中的emotion_id为空，请指定有效的emotion_id");
        }

        // 判断user_id不能为空
        if (emotions.getUserId() == null || emotions.getUserId().isEmpty()) {
            return R.fail("Emotions对象中的user_id为空或为空字符串，请指定要查询的用户");
        }

       /* // 当String mood为空时给出提醒
        if (emotions.getMood() == null || emotions.getMood().isEmpty()) {
            logger.warn("Emotions对象中的情绪状态（mood）为空或为空字符串，可能影响查询结果的准确性");
        }

        // 当description为空时给出提醒
        if (emotions.getDescription() == null || emotions.getDescription().isEmpty()) {
            logger.warn("Emotions对象中的情绪描述（description）为空或为空字符串，可能影响查询结果的准确性");
        }

        // 当reason为空时给出提醒
        if (emotions.getReason() == null || emotions.getReason().isEmpty()) {
            logger.warn("Emotions对象中的情绪影响因素（reason）为空或为空字符串，可能影响查询结果的准确性");
        }
*/
        try {
            List<Emotions> emotions1 = emotionsDao.selectByEmotions(emotions);
            return R.ok(emotions1);
        } catch (Exception e) {
            logger.error("查询情绪记录时出现异常：", e);
            return R.fail("查询情绪记录时出现异常，请检查相关设置");
        }
    }


    //修改
    @Override
    public R updateEmotions(Emotions emotions) {
        // 参数校验
        if (emotions == null) {
            return R.fail("传入的Emotions参数为空，请检查输入");
        }

        if (emotions.getUserId() == null) {
            return R.fail("Emotions参数中的emotion_id为空，请指定要修改的情绪记录的ID");
        }

        if (emotions.getUserId() == null) {
            return R.fail("Emotions参数中的user_id为空，请指定要修改记录的用户");
        }

        if (emotions.getMood() == null) {
            return R.fail("Emotions参数中的情绪状态为空，请指定情绪状态");
        }

        if (emotions.getDescription() == null) {
            return R.fail("Emotions参数中的情绪描述为空，请指定情绪描述");
        }

        if (emotions.getReason() == null) {
            return R.fail("Emotions参数中的情绪影响因素为空，请指定情绪影响因素");
        }

        try {
            // 执行数据库更新操作
            int rowsAffected = emotionsDao.updateEmotions(emotions);
            if (rowsAffected > 0) {
                return R.ok("情绪记录更新成功");
            } else {
                return R.fail("情绪记录更新失败，未影响到任何记录");
            }
        } catch (Exception e) {
            logger.error("更新情绪记录时出现异常：", e);
            return R.fail("更新情绪记录时出现异常，请检查相关设置");
        }
    }


    @Override
    public R deleteEmotions(Emotions emotions) {
        // 参数校验
        if (emotions == null) {
            return R.fail("传入的用于删除的情绪记录相关数据为空，请检查输入");
        }

        if (emotions.getEmotionId() == null) {
            return R.fail("请指定要删除的情绪记录的emotion_id");
        }

        /* try {*/
        int rowsAffected = emotionsDao.deleteEmotions(emotions);
        if (rowsAffected > 0) {
            return R.ok("情绪记录删除成功");
        } else {
            return R.fail("情绪记录删除失败，未找到对应的记录进行删除");
        }
       /* } catch (Exception e) {
            // 记录异常
            return R.fail("删除情绪记录时出现异常，请检查相关设置");
        }*/

    }
}







